

export type ElTreeComponentDataType = {
  label: string;
  children?: Array<ElTreeComponentDataType>;
  isFolder?: Boolean; // 是否是文件夹
}

// 组装前端views目录下的文件树 数据源
export const packViewsFolderTreeData = (formatedArr: Array<any>): Array<ElTreeComponentDataType> => {
  const result: Array<ElTreeComponentDataType> = []
  for (let i = 0; i < formatedArr.length; i++) {
    let curFile = formatedArr[i]
    if (Array.isArray(curFile)) {
      // 当前是一个目录的路径; 递归调用当前函数 遍历其内部的文件
      const foldreName = curFile[0].split('/').slice(-2)[0] // 取到当前文件夹的名称
      const childrenFolder = packViewsFolderTreeData(curFile)
      result.push({ label: `${foldreName}_文件夹`, children: childrenFolder, isFolder: true })
      continue
    }
    curFile = curFile.split('/').slice(-1)[0] // 只取最后一项
    result.push({ label: curFile })
  }

  return result
}

// 格式化当前的文件路径
export const splitFilePathName = (fileNamePath: string): string => {
  const tempArr = fileNamePath.split('/')
  /* /root/RemoteWorking/ts_project/crudTpl/vue-typescript-admin-template/src/views/ 去掉这一前缀 */
  return tempArr.splice(8).join('/')
}

// 格式化前端的文件目录
export const formatFileNameArr = (fileNameArr: any): Array<any> => {
  const formatedArr = []
  for (let i = 0; i < fileNameArr.length; i++) {
    let item = fileNameArr[i]
    if (Array.isArray(item)) {
      // 当前是一个目录的路径; 递归调用当前函数 遍历其内部的文件
      const res = formatFileNameArr(item)
      formatedArr.push(res)
      continue
    }
    // 当前一个文件的路径
    const formatedFileName = splitFilePathName(item)
    formatedArr.push(formatedFileName)
  }
  return formatedArr
}